package com.coupon.admin.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 拼券团实体类
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("coupon_group")
public class CouponGroup {
    
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    
    /**
     * 券ID
     */
    private Long couponId;
    
    /**
     * 发起人用户ID
     */
    private Long initiatorId;
    
    /**
     * 团状态：WAITING(等待成团), SUCCESS(成团成功), FAILED(成团失败), EXPIRED(已过期)
     */
    private String status;
    
    /**
     * 目标人数
     */
    private Integer targetSize;
    
    /**
     * 当前人数
     */
    private Integer currentSize;
    
    /**
     * 奖励倍数
     */
    private BigDecimal rewardMultiplier;
    
    /**
     * 过期时间
     */
    private LocalDateTime expireTime;
    
    /**
     * 成团时间
     */
    private LocalDateTime successTime;
    
    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    
    /**
     * 更新时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    
    /**
     * 逻辑删除标记
     */
    @TableLogic
    private Integer deleted;
}

/**
 * 拼券团成员实体类
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("coupon_group_member")
class CouponGroupMember {
    
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    
    /**
     * 团ID
     */
    private Long groupId;
    
    /**
     * 用户ID
     */
    private Long userId;
    
    /**
     * 加入时间
     */
    private LocalDateTime joinTime;
    
    /**
     * 是否助力者
     */
    private Boolean isHelper;
    
    /**
     * 获得奖励
     */
    private BigDecimal reward;
    
    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    
    /**
     * 更新时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    
    /**
     * 逻辑删除标记
     */
    @TableLogic
    private Integer deleted;
}
